<?php
class ClientesController extends AppController
{
	var $name='Clientes';
	//var $helpers=array('Html','Form');
	var $components = array('SwiftMailer');
	var $uses=array('Cliente','User','Direccione');
	var $paginate=array(
		'limit'=>20,
		'page'=>1,
		'order'=>array(
				'User.username'=>'asc'));
	
  
	function index()
	{
		if($this->Session->read('admin')!=1)
		{
                    $this->Session->setFlash('&Aacute;rea Restringida');
                    $this->redirect(array('controller'=>'menus','action'=>'index'));
		}
		else
		{
                    $this->Cliente->recursive=1;
                    $this->User->recursive=1;
                    $direcciones=$this->Direccione->find('all');
                    $this->set('direcciones',$direcciones);
                    $clientes=$this->Cliente->find('all');
                    $usuarios=$this->User->find('all');
                    $this->set('clientes',$clientes);
                    $this->set('usuarios',$this->paginate('User'));
		}
	}
	
	function add()
	{
		if (!$this->Session->read('idUser'))
		{
			if (!empty($this->data))
			{
                                //$this->data = array_map('strtoupper',$this->data);
				$this->User->create();
				$this->User->set($this->data);
				$this->User->Cliente->set($this->data);
				if($this->User->Cliente->validates())
				{
					if($this->User->validates())
					{			
						if ($this->Cliente->User->save($this->data,array('validate' => 'first')))
						{
							$this->data['Cliente']['user_id']=$this->User->id;
							if($this->Cliente->save($this->data))
							{
								if(!$this->RequestHandler->isAjax())
								{
									$this->Session->write('conf','Tus datos han sido registrados');
									$this->Session->write('idUser',$this->User->id);
									$this->Session->write('nombre',$this->User->field('nombre',array('username'=>$this->data['User']['username'])));
									$envioMail=$this->emailRegistro($this->data);
                                                                        $this->redirect(array('controller'=>'clientes','action'=>'confirmar'));
									
									//if($envioMail==true){
										
									//}
								}
								else
								{
									$this->Session->write('conf','Tus datos han sido registrados');
									$this->Session->write('idUser',$this->User->id);
									$this->Session->write('nombre',$this->User->field('nombre',array('username'=>$this->data['User']['username'])));
									$envioMail=$this->emailRegistro($this->data);
                                                                        $this->redirect(array('controller'=>'clientes','action'=>'confirmar'));
									
									//if($envioMail==true)
									//{
										
									//}
								}
								$this->set('closeModalbox',true);
							}
							else
							{
								$this->Session->setFlash(__('Ha Ocurrido un Error. Prueba de nuevo'),true);
								//$this->Session->write('conf','Ha Ocurrido un Error. Prueba de nuevo');
							}
						}
						else
						{
							$this->Session->setFlash(__('Ha Ocurrido un Error. Prueba de nuevo'),true);
							//$this->Session->write('conf','Ha Ocurrido un Error. Prueba de nuevo');
						}
					}
					else
					{
						$errorsCliente=$this->User->Cliente->invalidFields();
						$errorsUser=$this->User->invalidFields();
						$this->set('errorsCliente',$errorsCliente);
						$this->set('errorsUser',$errorsUser);
					}				
				}
				else
				{
					$errorsCliente=$this->User->Cliente->invalidFields();
					$errorsUser=$this->User->invalidFields();
					$this->set('errorsCliente',$errorsCliente);
					$this->set('errorsUser',$errorsUser);
				}
				//}
			}
			$direcciones=$this->Cliente->Direccione->find('list',array('fields'=>'Direccione.torre'));
			$this->set('direcciones',$direcciones);
		}
		else{
			//$this->Session->setFlash('Debe cerrar esta sesi&oacute;n antes de registrar un nuevo usuario');
			$this->redirect('/clientes/transSession');
		}
	}
	
	function confirmar(){}
	function cambiado(){}
	
	function consultar($id=null)
	{
		if($id!=null)
		{
			$this->User->recursive=1;
			//$this->User->id=$id;
			$this->set('cliente',$this->User->find('all',array('conditions'=>array('id'=>$id))));
			$this->set('direcciones',$this->Direccione->find('all'));
		}
	}
	function consultarAdmin($id=null)
	{
		if($this->Session->read('admin')!=1)
		{
			$this->Session->setFlash('&Aacute;rea Restringida');
			$this->redirect(array('controller'=>'menus','action'=>'index'));
		}
		else
		{
			$this->User->recursive=1;
			$this->set('cliente',$this->User->find('all',array('conditions'=>array('id'=>$id))));
		}
	}
	
	function transSession(){}
	function emailRegistro($data)
	{	
            $this->SwiftMailer->smtpType = $this->tipoSmtp;
            $this->SwiftMailer->smtpHost = $this->hostSmtp;
            $this->SwiftMailer->smtpPort = $this->puertoSmtp;
            $this->SwiftMailer->smtpUsername = $this->usernameSmtp;
            $this->SwiftMailer->smtpPassword = $this->passwordSmtp;
            $this->SwiftMailer->sendAs = $this->enviarComo;
            $this->SwiftMailer->from = $this->remitente;
            $this->SwiftMailer->fromName = 'Administrador Pronto Deli';
    //$this->SwiftMailer->to = $correo;
            $this->SwiftMailer->to = $data['Cliente']['mail'];

            $this->set('nombre',$data['User']['nombre']);
            $this->set('username',$data['User']['username']);
            $this->set('clave',$data['User']['password']);
            $this->set('correo',$data['Cliente']['mail']);
            $this->set('telefono',$data['Cliente']['telefono']);
            $this->set('celular',$data['Cliente']['celular']);
            $this->set('direccion',$data['Cliente']['direccione_id']);
            $this->set('empresa',$data['Cliente']['empresa']);
            $this->set('piso',$data['Cliente']['piso']);
            $this->set('oficina',$data['Cliente']['oficina']);
            $this->set('sexo',$data['Cliente']['sexo']);
            $retorno=false;
		
		
		try { 
            if(!$this->SwiftMailer->send('registro', 'Informaci&oacute;n de Registro Pronto Deli')) { 
                $this->log("Error Enviando Email");
				return $retorno;
				//exit();
            } 
        } 
        catch(Exception $e) { 
              $this->log("Failed to send email: ".$e->getMessage());
		}
		$retorno=true;
		return $retorno;
		
	}

	function cambiadoAdmin(){}
	
	function delete($id=null){
		$this->User->recursive=1;
		if(!$id)
		{	
			$this->Session->setFlash('Cliente invalido, por favor verifique');
			$this->redirect(array('action'=>'index'),null,true);
		}
		
		//if($this->Cliente->del($id) && $this->User->del($id) )
		if ($this->User->del($id,true))
		
		{
			$this->Session->setFlash('Cliente #'.$id.' Borrado');
			$this->redirect(array('controller'=>'clientes','action'=>'index'),null,true);
		}
	}
	
	
	function edit($id=null){
		if (!$id)
		{
			$this->Session->setFlash('Operaci&oacute;n Inv&aacute;lida');
			$this->redirect(array('controller'=>'menus','action'=>'index'),null,true);
		}
		if (empty($this->data))
		{
			$this->data=$this->User->find(array('id'=>$id));
		}
		else
		{
			$this->User->id=$this->data['Cliente']['user_id'];
			$this->User->set($this->data);
			$this->User->Cliente->set($this->data);
			if($this->User->Cliente->validates())
			{			
				if ($this->User->validates())
				{
						if($this->User->save($this->data))
						{
							//$this->data['Cliente']['user_id']=$this->User->id;
							$postMail=$this->data['Cliente']['mail'];
							if($this->data['Cliente']['sexo']==0){
								$textSexo="Masculino";
							}
							else{
								$textSexo="Femenino";
							}
							if($this->User->Cliente->updateAll(
							array(
									//'Cliente.sexo'=>'"'.$this->data['Cliente']['sexo'].'"',
									'Cliente.sexo'=>'"'.$textSexo.'"',
									'Cliente.mail'=>'"'.$postMail.'"',
									'Cliente.telefono'=>'"'.$this->data['Cliente']['telefono'].'"',
									'Cliente.celular'=>'"'.$this->data['Cliente']['celular'].'"',
									'Cliente.direccione_id'=>$this->data['Cliente']['direccione_id'],
									'Cliente.empresa'=>'"'.$this->data['Cliente']['empresa'].'"',
									'Cliente.piso'=>$this->data['Cliente']['piso'],
									'Cliente.oficina'=>'"'.$this->data['Cliente']['oficina'].'"',
									'Cliente.recibirmail'=>$this->data['Cliente']['recibirmail']),
								array('Cliente.user_id'=>$this->data['Cliente']['user_id'])))
							//if($this->Cliente->save($this->data))
							{
								$this->Session->write('modif','Los cambios han sido guardados');
								$this->User->id=$this->data['Cliente']['user_id'];
								$nuevoNombre=$this->User->field('nombre',array('id'=>$this->data['Cliente']['user_id']));
								$this->Session->write('nombre',$nuevoNombre);
								$this->redirect(array('controller'=>'clientes','action'=>'cambiado'),null,true);
								//$this->render('');
							}
							else
							{
								$this->Session->setFlash('La operaci&oacute;n no se realizo, Intente de nuevo');
								$this->redirect(array('controller'=>'pedidos','action'=>'index'),null,true);
							}
						}
						else
						{
							$this->Session->setFlash('La operaci&oacute;n no se realizo, Intente de nuevo');
							$this->redirect(array('controller'=>'pedidos','action'=>'index'),null,true);
						}
				}		
				else
				{
					$errorsUser=$this->User->invalidFields();
					//$this->Session->setFlash('Error en datos, por favor verifique');
				}				
			}
			else
			{
				$errorsCliente=$this->User->Cliente->invalidFields();
				//$this->Session->setFlash('Error en datos, por favor verifique');
			}	
		}
		$direcciones=$this->Cliente->Direccione->find('list',array('fields'=>'Direccione.torre'));
		$this->set('direcciones',$direcciones);
	}
	
	function search()
	{
		$results=$this->User->search($this->data['Cliente']['q']);
		//$idBusqueda=$this->User->find('all',array('fields'=>array('User.id'),'conditions'=>array('User.username'=>$this->data['Cliente']['q'])));
		$idBusqueda=$this->User->field('id',array('User.username'=>$this->data['Cliente']['q']));
		$clientesAsociado=$this->Cliente->find('all',array('conditions'=>array('Cliente.user_id'=>$idBusqueda)));
		$this->set('results',$results); 
		$this->set('clientesAsociado',$clientesAsociado);
		$direcciones=$this->Direccione->find('all');
		$this->set('direcciones',$direcciones);
	}
	
	function transAdmin(){}
	
	function adminAdd()
	{
	if($this->Session->read('admin')!=1)
		{
			$this->Session->setFlash('&Aacute;rea Restringida');
			$this->redirect(array('controller'=>'menus','action'=>'index'));
		}
		else
		{
			if(!empty($this->data))
			{
				$this->User->create();
				$this->User->set($this->data);
				$this->User->Cliente->set($this->data);
				/**/
				// obviando las validaciones para hacerlas por jquery
				/**/
				if($this->Cliente->User->save($this->data))
				{
					$this->data['Cliente']['user_id']=$this->User->id;
					//$this->data['Cliente']['admin']=1;
					$this->data['Cliente']['direccione_id']=0;
					$this->data['Cliente']['empresa']='No';
					$this->data['Cliente']['piso']=1;
					$this->data['Cliente']['oficina']='No';
                                        $this->data['Cliente']['sexo']='Masculino';
                                        $this->data['Cliente']['telefono']='00000000000';
					if($this->Cliente->save($this->data))
					{
						if(!$this->RequestHandler->isAjax())
						{
							$envioMail=$this->envioRegistroAdmin($this->data);
							if($envioMail==true){
								$this->Session->write('conf','Los datos se han registrado exitosamente');
								//$this->redirect(array('controller'=>'users','action'=>'adminIndex'));
								$this->redirect('/clientes/transAdmin');
							}
						}
						else{
							$envioMail=$this->envioRegistroAdmin($this->data);
							if($envioMail==true){
								$this->Session->write('conf','Los datos se han registrado exitosamente');
								//$this->redirect(array('controller'=>'users','action'=>'adminIndex'));
								$this->redirect('/clientes/transAdmin');
							}
						}
						$this->set('closeModalbox',true);
					}
					else{
						$this->Session->write('conf','Ha ocurrido un error intente de nuevo');
					}
				}
				else{
					$this->Session->write('conf','Ha ocurrido un error intente de nuevo');
				}
			}
			else{
				$direcciones=$this->Cliente->Direccione->find('list',array('fields'=>'Direccione.torre'));
				$this->set('direcciones',$direcciones);
			}
		}
	}
	
	function editAdmin($id=null)
	{
		if($this->Session->read('admin')!=1)
		{
			$this->Session->setFlash('&Aacute;rea Restringida');
			$this->redirect(array('controller'=>'menus','action'=>'index'));
		}
			else
			{
			if(!$id){
				$this->Session->setFlash('Operación Inválida');
				$this->redirect(array('controller'=>'admins','action'=>'index'));
			}
			if(empty($this->data)){
				$this->data=$this->User->find(array('id'=>$id));
			}
			else{
				$this->User->id=$this->data['Cliente']['user_id'];
				$this->User->set($this->data);
				
				if($this->User->save($this->data))
				{
					$this->data['Cliente']['user_id']=$id;
					$this->data['Cliente']['admin']=1;
					$this->data['Cliente']['direccione_id']=0;
					$this->data['Cliente']['empresa']='No';
					$this->data['Cliente']['piso']=1;
					$this->data['Cliente']['oficina']='No';
					$this->data['Cliente']['recibirmail']=0;
                                        $this->data['Cliente']['sexo']="Masculino";
                                        $this->data['Cliente']['telefono']="00000000000";
					if($this->Cliente->save($this->data)){
						$this->User->id=$this->data['Cliente']['user_id'];
						//$nuevoNombre=$this->User->field('nombre',array('id'=>$this->data['Cliente']['user_id']));
						$this->Session->write('nombre',$this->data['User']['nombre']);
						$this->Session->write('modifAdmin','Los cambios han sido guardados');
						$this->redirect(array('controller'=>'clientes','action'=>'cambiadoAdmin'));
					}
					else{
						$this->Session->write('modifAdmin','La operaci&oacute;n no se realizo, Intente de nuevo');
						$this->redirect(array('controller'=>'clientes','action'=>'cambiadoAdmin'));
					}
				}
				else{
					$this->Session->write('modifAdmin','La operaci&oacute;n no se realizo USER, Intente de nuevo');
					$this->redirect(array('controller'=>'clientes','action'=>'cambiadoAdmin'));
				}
			}
		}
	}
	function envioRegistroAdmin($data)
	{
            $this->SwiftMailer->smtpType = $this->tipoSmtp;
            $this->SwiftMailer->smtpHost = $this->hostSmtp;
            $this->SwiftMailer->smtpPort = $this->puertoSmtp;
            $this->SwiftMailer->smtpUsername = $this->usernameSmtp;
            $this->SwiftMailer->smtpPassword = $this->passwordSmtp;
            $this->SwiftMailer->sendAs = $this->enviarComo;
            $this->SwiftMailer->from = $this->remitente;
            $this->SwiftMailer->fromName = 'Administrador Pronto Deli';
            $this->SwiftMailer->to = $data['Cliente']['mail'];

            $this->set('nombre',$data['User']['nombre']);
            $this->set('username',$data['User']['username']);
            $this->set('clave',$data['User']['password']);
            $this->set('correo',$data['Cliente']['mail']);
            //$this->set('telefono',$data['Cliente']['telefono']);
            $this->set('celular',$data['Cliente']['celular']);
            //$this->set('sexo',$data['Cliente']['sexo']);
            $retorno=false;
		
		
		try { 
            while(!$this->SwiftMailer->send('registroadmin', 'Información de Registro Pronto Deli')) {
                $this->log("Error Enviando Email");
				return $retorno;
				//exit();
            } 
        } 
        catch(Exception $e) { 
              $this->log("Failed to send email: ".$e->getMessage());
		}
		$retorno=true;
		return $retorno;
	}
	
	function checkCedula()
	{	
            $this->autoRender = false;
            $this->layout = 'ajax';
            Configure::write('debug', 0);
            $username=$_REQUEST['cedula'];
            if($this->User->field('id',array('username'=>$username))!=null){
                    //echo"var msg=true";
                    //echo true;
                    $msg='true';
            }
            else{
                    //echo "var msg=false";
                    //echo false;
                    $msg='false';
            }
            echo $msg;
            //$this->set('value',$msg);
	}

        function exportarClientes(){
            if(!$this->Session->read('admin')){
                $this->Session->setFlash('&Aacute;rea Restringida');
                $this->redirect(array('controller'=>'menus','action'=>'index'));
            }
            else{
                $this->Cliente->recursive=1;
                $this->User->recursive=1;
                $direcciones=$this->Direccione->find('all');
                $this->set('direcciones',$direcciones);
                $clientes=$this->Cliente->find('all');
                $usuarios=$this->User->find('all');
                $this->set('clientes',$clientes);
                $this->set('usuarios',$this->paginate('User'));
                $this->render('exportar_clientes','export_xls');
            }
        }
}
?>